package it.azienda.stampe.view;

import it.azienda.framework.utilita.Utilita;
import it.azienda.framework.view.Dettaglio;
import it.azienda.managerworkstandard.modello.BeanFornitore;
import it.azienda.managerworkstandard.modello.BeanLogin;
import it.azienda.stampe.parametri.BeanStampaTotaleVendutoFamiglia;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.HashMap;
import javax.faces.component.html.HtmlForm;
import javax.faces.context.FacesContext;

/**
 *
 * @author Michele
 */
public class DettaglioStampaTotaleVendutoFamiglia extends Dettaglio {
    private HtmlForm form = new HtmlForm();
    private BeanStampaTotaleVendutoFamiglia beanStampaTotaleVendutoFamiglia;
    
    public void setBeanStampaTotaleVendutoFamiglia(BeanStampaTotaleVendutoFamiglia beanStampaTotaleVendutoFamiglia) {
        setObj(beanStampaTotaleVendutoFamiglia);
        this.beanStampaTotaleVendutoFamiglia = beanStampaTotaleVendutoFamiglia;
    }
    
    public BeanStampaTotaleVendutoFamiglia getBeanStampaTotaleVendutoFamiglia(){
        return (BeanStampaTotaleVendutoFamiglia)getObj();
    }
    
    public HtmlForm getForm() {
        form = (HtmlForm) Utilita.getSession().getAttribute("form");
        if (form == null) {
            form = new HtmlForm();
        }
        FacesContext ctx = FacesContext.getCurrentInstance();
        beanStampaTotaleVendutoFamiglia =(BeanStampaTotaleVendutoFamiglia) ctx.getExternalContext().getRequestMap().get("beanStampaTotaleVendutoFamiglia");
        Utilita.getSession().removeAttribute("form");
        return form;
    }
    
    public void setForm(HtmlForm form) {
        setFormObject(form);
        this.form = form;
        Utilita.getSession().setAttribute("form",form);
    }
    
    
    public void stampaJasper() {
        FacesContext ctx = FacesContext.getCurrentInstance();
        BeanStampaTotaleVendutoFamiglia beanStampa = (BeanStampaTotaleVendutoFamiglia) ctx.getApplication().getVariableResolver().resolveVariable(ctx,"beanStampaTotaleVendutoFamiglia");
        try{
            BeanLogin login = (BeanLogin) Utilita.getSession().getAttribute("login");
            
            String query = "";
            
            if(beanStampa.getTipo().equals("F")){
                query += "select sum (prodottifattura.prezzofinaleproddett) prezzoFinale";
            }else{
                query += "select sum (scontrinidett.prezzofinaleproddett) prezzoFinale";
            }
            
            if(beanStampa.getRaggruppa().equals("F")){
                query += " , prodotti.descrizione" ;
            }else{
                query += " , reparti.descrizione";
            }
            
            if(beanStampa.getTipo().equals("F")){
                query += " from fatture, prodottifattura,prodottidett,prodotti, reparti" +
                        " where fatture.id = prodottifattura.fattura_id" +
                        " and fatture.data between $P{dataDa} and $P{dataA}" +
                        " and prodottidett.id = prodottifattura.prodotto_id" +
                        " and prodotti.id = prodottidett.prodotto_id" +
                        " and reparti.id = prodotti.reparto_id";
            }else{
                query += " from scontrini, scontrinidett,prodottidett,prodotti, reparti" +
                        "  where scontrini.id = scontrinidett.scontrino_id" +
                        "  and scontrini.data between $P{dataDa} and $P{dataA}" +
                        "  and prodottidett.id = scontrinidett.prodotto_id" +
                        "  and prodotti.id = prodottidett.prodotto_id" +
                        "  and reparti.id = prodotti.reparto_id";
            }
            
            if(beanStampa.getRaggruppa().equals("F")){
                query += " group by prodotti.descrizione";
            }else{
                query += " group by reparti.descrizione";
            }
            
            if(beanStampa.getTipo().equals("F")){
                query += " order by sum (prodottifattura.prezzofinaleproddett) desc";
            }else{
                query += " order by sum (scontrinidett.prezzofinaleproddett) desc";
            }
            beanStampa.setQueryNuova(query);
            
            String titolo = "";
            if(beanStampa.getTipo().equals("F")){
                titolo += " Famiglia Prodotto                                                                               ";
            }else{
                titolo += " Reparto Prodotto                                                                                ";
            }
            
            Calendar data = new GregorianCalendar();
            data.setTime(beanStampa.getDataDa());
            int aaaa = data.get(Calendar.YEAR);
            String mm = new Integer(data.get(Calendar.MONTH) + 1).toString();
            String gg = new Integer(data.get(Calendar.DAY_OF_MONTH)).toString();
            if(mm.length() == 1){
                mm = "0"+mm;
            }
            if(gg.length() == 1){
                gg = "0"+gg;
            }
            if(beanStampa.getTipo().equals("F")){
                titolo += " Totale Fatture ";
            }else{
                titolo += " Totale Scontrini ";
            }
            
            
            titolo +="dal " +gg+"/"+mm+"/"+aaaa;
            data = new GregorianCalendar();
            data.setTime(beanStampa.getDataA());
            aaaa = data.get(Calendar.YEAR);
            mm = new Integer(data.get(Calendar.MONTH) + 1).toString();
            gg = new Integer(data.get(Calendar.DAY_OF_MONTH)).toString();
            if(mm.length() == 1){
                mm = "0"+mm;
            }
            if(gg.length() == 1){
                gg = "0"+gg;
            }
            titolo +=" al " +gg+"/"+mm+"/"+aaaa;
            
            HashMap parametri = new HashMap();
            parametri.put("dataDa",beanStampa.getDataDa());
            parametri.put("dataA",beanStampa.getDataA());
            parametri.put("titolo",titolo);
            beanStampa.setParametriStampa(parametri);
            beanStampa.setNomeStampa("TotaleVendutoFamiglia");
            beanStampa.setTipoReport(new Integer(0));
            beanStampa.setTipoStampa(new Integer(0));
            beanStampa.setTipoSalvataggio(new Integer(0));
            beanStampa.setTipoOutput(new Integer(0));
            super.setBeanStampa(beanStampa);
            super.stampaJasper();
        }catch(Exception ex){
        }finally {
            Utilita.getRequest().setAttribute("beanStampaTotaleVendutoFamiglia",beanStampa);
        }
    }
    
}